1 module mruby.array; 2 3 extern (C): 4 5 import mruby.value; 6 import mruby.mrb_class; 7 import mruby.object; 8 import mruby; 9 10 struct mrb_shared_array 11 { 12 int refcnt; 13 mrb_int len; 14 mrb_value* ptr; 15 } 16 17 struct RArray 18 { 19 enum mrb_vtype 20 { 21 MRB_TT_FALSE = 0, 22 MRB_TT_FREE = 1, 23 MRB_TT_TRUE = 2, 24 MRB_TT_FIXNUM = 3, 25 MRB_TT_SYMBOL = 4, 26 MRB_TT_UNDEF = 5, 27 MRB_TT_FLOAT = 6, 28 MRB_TT_CPTR = 7, 29 MRB_TT_OBJECT = 8, 30 MRB_TT_CLASS = 9, 31 MRB_TT_MODULE = 10, 32 MRB_TT_ICLASS = 11, 33 MRB_TT_SCLASS = 12, 34 MRB_TT_PROC = 13, 35 MRB_TT_ARRAY = 14, 36 MRB_TT_HASH = 15, 37 MRB_TT_STRING = 16, 38 MRB_TT_RANGE = 17, 39 MRB_TT_EXCEPTION = 18, 40 MRB_TT_FILE = 19, 41 MRB_TT_ENV = 20, 42 MRB_TT_DATA = 21, 43 MRB_TT_FIBER = 22, 44 MRB_TT_MAXDEFINE = 23 45 } 46 mrb_vtype tt; 47 uint color; 48 uint flags; 49 RClass* c; 50 RBasic* gcnext; 51 mrb_int len; 52 union 53 { 54 mrb_int capa; 55 mrb_shared_array* shared_; 56 } 57 mrb_value* ptr; 58 } 59 60 void mrb_ary_decref (mrb_state*, mrb_shared_array*); 61 void mrb_ary_modify (mrb_state*, RArray*); 62 mrb_value mrb_ary_new_capa (mrb_state*, mrb_int); 63 mrb_value mrb_ary_new (mrb_state* mrb); 64 mrb_value mrb_ary_new_from_values (mrb_state* mrb, mrb_int size, const(mrb_value)* vals); 65 mrb_value mrb_assoc_new (mrb_state* mrb, mrb_value car, mrb_value cdr); 66 void mrb_ary_concat (mrb_state*, mrb_value, mrb_value); 67 mrb_value mrb_ary_splat (mrb_state*, mrb_value); 68 void mrb_ary_push (mrb_state*, mrb_value, mrb_value); 69 mrb_value mrb_ary_pop (mrb_state* mrb, mrb_value ary); 70 mrb_value mrb_ary_ref (mrb_state* mrb, mrb_value ary, mrb_int n); 71 void mrb_ary_set (mrb_state* mrb, mrb_value ary, mrb_int n, mrb_value val); 72 void mrb_ary_replace (mrb_state* mrb, mrb_value a, mrb_value b); 73 mrb_value mrb_check_array_type (mrb_state* mrb, mrb_value self); 74 mrb_value mrb_ary_unshift (mrb_state* mrb, mrb_value self, mrb_value item); 75 mrb_value mrb_ary_entry (mrb_value ary, mrb_int offset); 76 mrb_value mrb_ary_shift (mrb_state* mrb, mrb_value self); 77 mrb_value mrb_ary_clear (mrb_state* mrb, mrb_value self); 78 mrb_value mrb_ary_join (mrb_state* mrb, mrb_value ary, mrb_value sep); 79 mrb_value mrb_ary_resize (mrb_state* mrb, mrb_value ary, mrb_int len); 80 mrb_int mrb_ary_len (mrb_state* mrb, mrb_value ary);